home *** CD-ROM | disk | FTP | other *** search
/ Ian & Stuart's Australian Mac 1993 September / September 93.iso / Archives / Applications / Text / Text Editors / Alpha 5.31 Folder / Tcl / SystemCode / templates.tcl < prev    next >
Encoding:
Text File  |  1993-01-25  |  1.9 KB  |  78 lines  |  [TEXT/ALFA]

  1. #=============================================================================
  2. # Template editing, just an example.  To use, load this file, hit
  3. # control-i, and a for template will appear. Consecutive control-j's
  4. # will step you though various fields of the for statement. 
  5. #=============================================================================
  6.  
  7. # C 'for' template
  8.  
  9. menu -n C {
  10.     "forTemplate"
  11.     "whileTemplate"
  12.     "(-"
  13.     "/\\nextStop"
  14.     "(-"
  15.     "findTag…"
  16.     "createTagFile"}
  17.  
  18. proc forTemplate {} {
  19.     indentLine
  20.     set pos [getPos]
  21.     set indent [indentString $pos]
  22.     set str1 "for (\;\;)\r"
  23.     set str2 "\{\r"
  24.     set str3 "\t\r"
  25.     set str4 "\}\r"
  26.  
  27.     insertText $str1 $indent $str2 $indent $str3 $indent $str4 $indent
  28.     set len [string length $indent]
  29.     
  30.     createTMark stop1 [expr $pos+5]
  31.     createTMark stop2 [expr $pos+6]
  32.     createTMark stop3 [expr $pos+7]
  33.     set temp4 [expr { $pos + [string length $str1] + [string length $str2] +
  34.                              [string length $str3] + 2 * $len - 1}]
  35.     createTMark stop4 $temp4
  36.     createTMark stop5 [expr { $temp4 + 2 * [string length $str4] + $len}]
  37.     
  38.     global stopRing
  39.     set stopRing "stop1 stop2 stop3 stop4 stop5"
  40.     gotoTMark stop1
  41.     bind 'j' <z> nextStop
  42. }
  43.  
  44. proc whileTemplate {} {
  45.     indentLine
  46.     set pos [getPos]
  47.     set indent [indentString $pos]
  48.     set str1 "while ()\r"
  49.     set str2 "\{\r"
  50.     set str3 "\t\r"
  51.     set str4 "\}\r"
  52.  
  53.     insertText $str1 $indent $str2 $indent $str3 $indent $str4 $indent
  54.     set len [string length $indent]
  55.     
  56.     createTMark stop1 [expr $pos+7]
  57.     set temp [expr { $pos + [string length $str1] + [string length $str2] +
  58.                              [string length $str3] + 2 * $len - 1}]
  59.     createTMark stop2 $temp
  60.     createTMark stop3 [expr { $temp + 2 * [string length $str4] + $len}]
  61.     
  62.     global stopRing
  63.     set stopRing "stop1 stop2 stop3"
  64.     gotoTMark stop1
  65.     bind 'j' <z> nextStop
  66. }
  67.  
  68. proc nextStop {} {
  69.     global stopRing
  70.     set first [lindex $stopRing 0]
  71.     set stopRing [lreplace $stopRing 0 0]
  72.     set stopRing [lappend stopRing $first]
  73.     gotoTMark [lindex $stopRing 0]
  74. }
  75.  
  76.  
  77.  
  78.